This cell imports necessary libraries for data manipulation, statistical modeling, visualization, and plotting.
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.formula.api import ols
import seaborn as sns
from itertools import product
import matplotlib.pyplot as plt
import plotly.graph_objs as go
from plotly.subplots import make_subplots
from statsmodels.stats.multicomp import MultiComparison
# Ensure all necessary libraries are imported for the subsequent analysis.
This cell generates example data simulating a study with factors like Diet, Housing, and Season, along with a response variable WeightGain.
np.random.seed(123)
# Define levels for Diet, Housing, and Season
diet_levels = ["Diet1", "Diet2", "Diet3"]
housing_levels = ["Housing1", "Housing2", "Housing3"]
season_levels = ["Winter", "Summer", "Spring"]
# Create a DataFrame with simulated data
# Sample data
data = pd.DataFrame({
'Diet': np.random.choice(['Diet1', 'Diet2', 'Diet3'], 100),
'Housing': np.random.choice(['Housing1', 'Housing2', 'Housing3'], 100),
'Season': np.random.choice(['Winter', 'Spring', 'Summer'], 100),
'WeightGain': np.random.normal(5, 2, 100)
})
data.head()
| Diet | Housing | Season | WeightGain | |
|---|---|---|---|---|
| 0 | Diet3 | Housing1 | Spring | 6.662161 |
| 1 | Diet2 | Housing3 | Summer | 5.044735 |
| 2 | Diet3 | Housing3 | Winter | 4.861981 |
| 3 | Diet3 | Housing2 | Winter | 1.133253 |
| 4 | Diet1 | Housing2 | Winter | 3.815068 |
This cell fits a linear regression model to the simulated data to analyze the effects of Diet, Housing, and Season on WeightGain.
# Fit linear model
model = ols('WeightGain ~ Diet * Housing * Season', data=data).fit()
# Display summary of the model
print(model.summary())
OLS Regression Results
==============================================================================
Dep. Variable: WeightGain R-squared: 0.280
Model: OLS Adj. R-squared: 0.024
Method: Least Squares F-statistic: 1.094
Date: Tue, 25 Jun 2024 Prob (F-statistic): 0.370
Time: 12:58:32 Log-Likelihood: -199.63
No. Observations: 100 AIC: 453.3
Df Residuals: 73 BIC: 523.6
Df Model: 26
Covariance Type: nonrobust
======================================================================================================================
coef std err t P>|t| [0.025 0.975]
----------------------------------------------------------------------------------------------------------------------
Intercept 5.9352 1.042 5.693 0.000 3.857 8.013
Diet[T.Diet2] -2.4205 1.806 -1.341 0.184 -6.019 1.178
Diet[T.Diet3] -1.1737 1.307 -0.898 0.372 -3.778 1.431
Housing[T.Housing2] -3.3529 1.474 -2.274 0.026 -6.291 -0.415
Housing[T.Housing3] -2.4140 1.474 -1.637 0.106 -5.352 0.524
Season[T.Summer] -2.4875 1.592 -1.562 0.123 -5.661 0.686
Season[T.Winter] -0.2449 2.331 -0.105 0.917 -4.891 4.401
Diet[T.Diet2]:Housing[T.Housing2] 2.8534 2.949 0.968 0.336 -3.023 8.730
Diet[T.Diet3]:Housing[T.Housing2] 3.4253 1.970 1.739 0.086 -0.501 7.352
Diet[T.Diet2]:Housing[T.Housing3] 2.9221 2.284 1.279 0.205 -1.630 7.474
Diet[T.Diet3]:Housing[T.Housing3] 3.4160 1.914 1.785 0.078 -0.399 7.231
Diet[T.Diet2]:Season[T.Summer] 4.0669 2.482 1.639 0.106 -0.879 9.013
Diet[T.Diet3]:Season[T.Summer] 1.9645 2.146 0.915 0.363 -2.313 6.242
Diet[T.Diet2]:Season[T.Winter] 1.9014 2.912 0.653 0.516 -3.901 7.704
Diet[T.Diet3]:Season[T.Winter] 0.3742 2.869 0.130 0.897 -5.343 6.091
Housing[T.Housing2]:Season[T.Summer] 6.0384 2.085 2.896 0.005 1.883 10.194
Housing[T.Housing3]:Season[T.Summer] 3.8234 2.252 1.698 0.094 -0.665 8.312
Housing[T.Housing2]:Season[T.Winter] 3.0170 2.823 1.069 0.289 -2.609 8.643
Housing[T.Housing3]:Season[T.Winter] 5.7723 2.949 1.958 0.054 -0.104 11.649
Diet[T.Diet2]:Housing[T.Housing2]:Season[T.Summer] -6.1148 3.661 -1.670 0.099 -13.411 1.182
Diet[T.Diet3]:Housing[T.Housing2]:Season[T.Summer] -5.5791 2.992 -1.865 0.066 -11.543 0.384
Diet[T.Diet2]:Housing[T.Housing3]:Season[T.Summer] -3.0336 3.319 -0.914 0.364 -9.647 3.580
Diet[T.Diet3]:Housing[T.Housing3]:Season[T.Summer] -3.8283 3.076 -1.245 0.217 -9.958 2.302
Diet[T.Diet2]:Housing[T.Housing2]:Season[T.Winter] -1.0224 4.055 -0.252 0.802 -9.105 7.060
Diet[T.Diet3]:Housing[T.Housing2]:Season[T.Winter] -2.7686 3.546 -0.781 0.437 -9.836 4.299
Diet[T.Diet2]:Housing[T.Housing3]:Season[T.Winter] -5.9157 3.671 -1.611 0.111 -13.232 1.401
Diet[T.Diet3]:Housing[T.Housing3]:Season[T.Winter] -6.1395 3.637 -1.688 0.096 -13.388 1.109
==============================================================================
Omnibus: 1.975 Durbin-Watson: 2.088
Prob(Omnibus): 0.373 Jarque-Bera (JB): 1.828
Skew: 0.231 Prob(JB): 0.401
Kurtosis: 2.525 Cond. No. 60.1
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
This cell creates an interaction plot using Seaborn to visualize the effects of Diet and Housing on WeightGain.
# Interaction plot using Seaborn
plt.figure(figsize=(10, 6))
sns.pointplot(x='Diet', y='WeightGain', hue='Housing', data=data, ci=None)
plt.title('Interaction Plot of Diet and Housing on Weight Gain')
plt.xlabel('Diet')
plt.ylabel('Mean Weight Gain')
plt.legend(title='Housing')
plt.show()
This cell perform Tukey's Honestly Significant Difference (HSD) test across all factors (Diet, Housing, Season, and their interactions), we'll need to conduct pairwise comparisons for each factor and their combinations.
# Define factors and their levels
factors = ['Diet', 'Housing', 'Season']
factor_levels = {
'Diet': diet_levels,
'Housing': housing_levels,
'Season': season_levels
}
# Perform Tukey's HSD test for each factor and their interactions
for factor in factors:
mc = MultiComparison(data['WeightGain'], data[factor])
result = mc.tukeyhsd()
print(f"Tukey's HSD Test for {factor}:")
print(result)
print("\n")
Tukey's HSD Test for Diet: Multiple Comparison of Means - Tukey HSD, FWER=0.05 =================================================== group1 group2 meandiff p-adj lower upper reject --------------------------------------------------- Diet1 Diet2 0.0997 0.9815 -1.1898 1.3893 False Diet1 Diet3 0.0856 0.9852 -1.1537 1.3249 False Diet2 Diet3 -0.0141 0.9996 -1.2316 1.2034 False --------------------------------------------------- Tukey's HSD Test for Housing: Multiple Comparison of Means - Tukey HSD, FWER=0.05 ======================================================= group1 group2 meandiff p-adj lower upper reject ------------------------------------------------------- Housing1 Housing2 0.2322 0.899 -1.0243 1.4887 False Housing1 Housing3 0.5184 0.5899 -0.7381 1.7749 False Housing2 Housing3 0.2862 0.8394 -0.921 1.4934 False ------------------------------------------------------- Tukey's HSD Test for Season: Multiple Comparison of Means - Tukey HSD, FWER=0.05 =================================================== group1 group2 meandiff p-adj lower upper reject --------------------------------------------------- Spring Summer 0.6249 0.4348 -0.5782 1.8281 False Spring Winter 1.2803 0.0307 0.097 2.4637 True Summer Winter 0.6554 0.4154 -0.5728 1.8836 False ---------------------------------------------------
# Perform Tukey's HSD test for interactions
for i in range(len(factors)):
for j in range(i+1, len(factors)):
factor1 = factors[i]
factor2 = factors[j]
mc = MultiComparison(data['WeightGain'], data.groupby([factor1, factor2]).grouper.group_info[0])
result = mc.tukeyhsd()
print(f"Tukey's HSD Test for Interaction between {factor1} and {factor2}:")
print(result)
print("\n")
Tukey's HSD Test for Interaction between Diet and Housing:
Multiple Comparison of Means - Tukey HSD, FWER=0.05
===================================================
group1 group2 meandiff p-adj lower upper reject
---------------------------------------------------
0 1 -0.1109 1.0 -3.2289 3.0071 False
0 2 0.223 1.0 -3.1486 3.5947 False
0 3 -0.155 1.0 -3.4463 3.1364 False
0 4 0.3341 1.0 -3.0375 3.7057 False
0 5 0.1797 1.0 -2.9382 3.2977 False
0 6 -0.3195 1.0 -3.4866 2.8476 False
0 7 0.0217 1.0 -3.0963 3.1397 False
0 8 0.5784 0.9996 -2.5395 3.6964 False
1 2 0.334 1.0 -2.6749 3.3428 False
1 3 -0.044 1.0 -2.9626 2.8746 False
1 4 0.445 0.9999 -2.5638 3.4539 False
1 5 0.2907 1.0 -2.4309 3.0123 False
1 6 -0.2085 1.0 -2.9863 2.5692 False
1 7 0.1326 1.0 -2.589 2.8542 False
1 8 0.6894 0.9965 -2.0322 3.411 False
2 3 -0.378 1.0 -3.5661 2.8102 False
2 4 0.1111 1.0 -3.1599 3.382 False
2 5 -0.0433 1.0 -3.0521 2.9656 False
2 6 -0.5425 0.9997 -3.6022 2.5172 False
2 7 -0.2013 1.0 -3.2102 2.8075 False
2 8 0.3554 1.0 -2.6534 3.3643 False
3 4 0.4891 0.9999 -2.6991 3.6772 False
3 5 0.3347 1.0 -2.5839 3.2533 False
3 6 -0.1645 1.0 -3.1355 2.8065 False
3 7 0.1767 1.0 -2.7419 3.0953 False
3 8 0.7334 0.9967 -2.1852 3.652 False
4 5 -0.1544 1.0 -3.1632 2.8545 False
4 6 -0.6536 0.9989 -3.7133 2.4061 False
4 7 -0.3124 1.0 -3.3212 2.6964 False
4 8 0.2443 1.0 -2.7645 3.2532 False
5 6 -0.4992 0.9997 -3.2769 2.2785 False
5 7 -0.158 1.0 -2.8796 2.5636 False
5 8 0.3987 0.9999 -2.3229 3.1203 False
6 7 0.3412 1.0 -2.4365 3.1189 False
6 8 0.8979 0.9822 -1.8798 3.6756 False
7 8 0.5567 0.9992 -2.1649 3.2783 False
---------------------------------------------------
Tukey's HSD Test for Interaction between Diet and Season:
Multiple Comparison of Means - Tukey HSD, FWER=0.05
===================================================
group1 group2 meandiff p-adj lower upper reject
---------------------------------------------------
0 1 1.1298 0.9181 -1.5603 3.82 False
0 2 2.6289 0.2293 -0.6659 5.9236 False
0 3 -0.2431 1.0 -3.2508 2.7646 False
0 4 1.2402 0.8963 -1.5813 4.0616 False
0 5 1.7158 0.4777 -0.8765 4.3081 False
0 6 1.0798 0.9083 -1.4366 3.5962 False
0 7 0.7352 0.9965 -2.1705 3.6409 False
0 8 1.2701 0.8384 -1.3678 3.908 False
1 2 1.4991 0.8767 -1.7957 4.7938 False
1 3 -1.3729 0.8747 -4.3806 1.6348 False
1 4 0.1103 1.0 -2.7111 2.9318 False
1 5 0.586 0.9984 -2.0063 3.1783 False
1 6 -0.05 1.0 -2.5664 2.4664 False
1 7 -0.3947 1.0 -3.3004 2.511 False
1 8 0.1403 1.0 -2.4976 2.7782 False
2 3 -2.872 0.2164 -6.4307 0.6868 False
2 4 -1.3887 0.9298 -4.7915 2.0141 False
2 5 -0.9131 0.9923 -4.1285 2.3022 False
2 6 -1.5491 0.8232 -4.7036 1.6054 False
2 7 -1.8937 0.7249 -5.3667 1.5792 False
2 8 -1.3587 0.9204 -4.611 1.8935 False
3 4 1.4832 0.849 -1.6424 4.6089 False
3 5 1.9589 0.459 -0.9616 4.8793 False
3 6 1.3229 0.8649 -1.5304 4.1762 False
3 7 0.9782 0.9876 -2.2237 4.1802 False
3 8 1.5132 0.7892 -1.4478 4.4743 False
4 5 0.4756 0.9998 -2.2527 3.2039 False
4 6 -0.1603 1.0 -2.8167 2.496 False
4 7 -0.505 0.9998 -3.5327 2.5227 False
4 8 0.03 1.0 -2.7417 2.8017 False
5 6 -0.636 0.9953 -3.0475 1.7755 False
5 7 -0.9806 0.9718 -3.796 1.8347 False
5 8 -0.4456 0.9997 -2.9837 2.0924 False
6 7 -0.3447 1.0 -3.0903 2.401 False
6 8 0.1903 1.0 -2.2702 2.6508 False
7 8 0.535 0.9996 -2.3224 3.3924 False
---------------------------------------------------
Tukey's HSD Test for Interaction between Housing and Season:
Multiple Comparison of Means - Tukey HSD, FWER=0.05
===================================================
group1 group2 meandiff p-adj lower upper reject
---------------------------------------------------
0 1 -0.6707 0.9979 -3.5271 2.1857 False
0 2 0.2352 1.0 -2.7248 3.1952 False
0 3 -1.2997 0.8766 -4.1562 1.5567 False
0 4 0.3908 0.9999 -2.1929 2.9745 False
0 5 0.7613 0.9902 -1.8224 3.3451 False
0 6 -0.4296 0.9998 -2.9668 2.1075 False
0 7 0.5641 0.9994 -2.2924 3.4205 False
0 8 1.1863 0.8834 -1.4507 3.8233 False
1 2 0.9059 0.9925 -2.2949 4.1068 False
1 3 -0.629 0.9993 -3.7343 2.4762 False
1 4 1.0615 0.9586 -1.7949 3.9179 False
1 5 1.4321 0.8061 -1.4243 4.2885 False
1 6 0.2411 1.0 -2.5733 3.0554 False
1 7 1.2348 0.9391 -1.8705 4.34 False
1 8 1.857 0.526 -1.0477 4.7617 False
2 3 -1.535 0.8414 -4.7358 1.6658 False
2 4 0.1556 1.0 -2.8044 3.1156 False
2 5 0.5261 0.9997 -2.4339 3.4862 False
2 6 -0.6649 0.9983 -3.5843 2.2546 False
2 7 0.3288 1.0 -2.872 3.5296 False
2 8 0.9511 0.9845 -2.0556 3.9577 False
3 4 1.6905 0.6285 -1.1659 4.547 False
3 5 2.0611 0.3573 -0.7953 4.9175 False
3 6 0.8701 0.9866 -1.9443 3.6845 False
3 7 1.8638 0.6106 -1.2415 4.969 False
3 8 2.486 0.1556 -0.4187 5.3907 False
4 5 0.3705 0.9999 -2.2132 2.9543 False
4 6 -0.8205 0.9822 -3.3576 1.7167 False
4 7 0.1732 1.0 -2.6832 3.0297 False
4 8 0.7955 0.9886 -1.8415 3.4325 False
5 6 -1.191 0.8566 -3.7282 1.3462 False
5 7 -0.1973 1.0 -3.0537 2.6591 False
5 8 0.4249 0.9999 -2.2121 3.0619 False
6 7 0.9937 0.9694 -1.8207 3.8081 False
6 8 1.6159 0.56 -0.9755 4.2073 False
7 8 0.6222 0.9989 -2.2825 3.5269 False
---------------------------------------------------
# Perform Tukey's HSD test for interactions between Diet, Housing, and Season
mc = MultiComparison(data['WeightGain'], data.groupby(factors).grouper.group_info[0])
result = mc.tukeyhsd()
print(f"Tukey's HSD Test for Interaction between Diet, Housing, and Season:")
print(result)
Tukey's HSD Test for Interaction between Diet, Housing, and Season:
Multiple Comparison of Means - Tukey HSD, FWER=0.05
=====================================================
group1 group2 meandiff p-adj lower upper reject
-----------------------------------------------------
0 1 -2.4875 0.9981 -8.6103 3.6352 False
0 2 -0.2449 1.0 -9.2077 8.7179 False
0 3 -3.3529 0.8583 -9.0215 2.3156 False
0 4 0.1979 1.0 -4.9768 5.3725 False
0 5 -0.5808 1.0 -6.7035 5.5419 False
0 6 -2.414 0.9962 -8.0825 3.2546 False
0 7 -1.0782 1.0 -7.2009 5.0446 False
0 8 3.1134 0.9924 -3.8291 10.0559 False
0 9 -2.4205 0.9998 -9.363 4.522 False
0 10 -0.8411 1.0 -6.9638 5.2816 False
0 11 -0.7639 1.0 -6.1416 4.6137 False
0 12 -2.92 0.9999 -11.8828 6.0427 False
0 13 -1.4171 1.0 -7.0857 4.2514 False
0 14 0.7312 1.0 -4.9374 6.3997 False
0 15 -1.9124 0.9998 -7.2901 3.4652 False
0 16 0.4568 1.0 -5.666 6.5795 False
0 17 -0.3993 1.0 -5.7769 4.9784 False
0 18 -1.1737 1.0 -6.1984 3.8509 False
0 19 -1.6967 1.0 -7.8195 4.426 False
0 20 -1.0444 1.0 -7.9869 5.8981 False
0 21 -1.1014 1.0 -6.7699 4.5672 False
0 22 -1.1651 1.0 -7.2878 4.9576 False
0 23 -0.7236 1.0 -5.8983 4.451 False
0 24 -0.1717 1.0 -5.5493 5.206 False
0 25 -0.6996 1.0 -6.8223 5.4231 False
0 26 -0.4096 1.0 -5.7872 4.9681 False
1 2 2.2427 1.0 -7.014 11.4994 False
1 3 -0.8654 1.0 -6.9881 5.2573 False
1 4 2.6854 0.9848 -2.9831 8.354 False
1 5 1.9067 1.0 -4.6387 8.4522 False
1 6 0.0736 1.0 -6.0492 6.1963 False
1 7 1.4094 1.0 -5.1361 7.9548 False
1 8 5.6009 0.4046 -1.7171 12.919 False
1 9 0.0671 1.0 -7.251 7.3851 False
1 10 1.6465 1.0 -4.899 8.1919 False
1 11 1.7236 1.0 -4.1308 7.5781 False
1 12 -0.4325 1.0 -9.6892 8.8242 False
1 13 1.0704 1.0 -5.0523 7.1931 False
1 14 3.2187 0.9513 -2.904 9.3414 False
1 15 0.5751 1.0 -5.2793 6.4296 False
1 16 2.9443 0.9921 -3.6012 9.4898 False
1 17 2.0883 0.9998 -3.7662 7.9427 False
1 18 1.3138 1.0 -4.2181 6.8458 False
1 19 0.7908 1.0 -5.7547 7.3363 False
1 20 1.4432 1.0 -5.8749 8.7612 False
1 21 1.3862 1.0 -4.7365 7.5089 False
1 22 1.3224 1.0 -5.2231 7.8679 False
1 23 1.7639 1.0 -3.9046 7.4325 False
1 24 2.3159 0.9987 -3.5386 8.1703 False
1 25 1.7879 1.0 -4.7575 8.3334 False
1 26 2.078 0.9998 -3.7765 7.9324 False
2 3 -3.108 0.9998 -12.0708 5.8547 False
2 4 0.4428 1.0 -8.2161 9.1016 False
2 5 -0.3359 1.0 -9.5926 8.9208 False
2 6 -2.1691 1.0 -11.1319 6.7937 False
2 7 -0.8333 1.0 -10.09 8.4234 False
2 8 3.3583 0.9999 -6.4599 13.1765 False
2 9 -2.1756 1.0 -11.9938 7.6426 False
2 10 -0.5962 1.0 -9.8529 8.6605 False
2 11 -0.519 1.0 -9.3007 8.2626 False
2 12 -2.6752 1.0 -14.0122 8.6619 False
2 13 -1.1722 1.0 -10.135 7.7905 False
2 14 0.976 1.0 -7.9867 9.9388 False
2 15 -1.6675 1.0 -10.4492 7.1141 False
2 16 0.7017 1.0 -8.555 9.9584 False
2 17 -0.1544 1.0 -8.936 8.6273 False
2 18 -0.9288 1.0 -9.4989 7.6412 False
2 19 -1.4518 1.0 -10.7085 7.8049 False
2 20 -0.7995 1.0 -10.6177 9.0187 False
2 21 -0.8565 1.0 -9.8192 8.1063 False
2 22 -0.9202 1.0 -10.1769 8.3365 False
2 23 -0.4787 1.0 -9.1376 8.1801 False
2 24 0.0732 1.0 -8.7085 8.8549 False
2 25 -0.4547 1.0 -9.7114 8.802 False
2 26 -0.1647 1.0 -8.9463 8.617 False
3 4 3.5508 0.6257 -1.6238 8.7255 False
3 5 2.7721 0.9914 -3.3506 8.8948 False
3 6 0.9389 1.0 -4.7296 6.6075 False
3 7 2.2747 0.9995 -3.848 8.3975 False
3 8 6.4663 0.1024 -0.4762 13.4089 False
3 9 0.9324 1.0 -6.0101 7.875 False
3 10 2.5118 0.9978 -3.6109 8.6346 False
3 11 2.589 0.9815 -2.7887 7.9666 False
3 12 0.4329 1.0 -8.5299 9.3956 False
3 13 1.9358 0.9999 -3.7328 7.6043 False
3 14 4.0841 0.5281 -1.5845 9.7526 False
3 15 1.4405 1.0 -3.9371 6.8182 False
3 16 3.8097 0.7933 -2.313 9.9324 False
3 17 2.9537 0.9253 -2.424 8.3313 False
3 18 2.1792 0.9951 -2.8454 7.2038 False
3 19 1.6562 1.0 -4.4665 7.7789 False
3 20 2.3086 0.9999 -4.634 9.2511 False
3 21 2.2516 0.9986 -3.417 7.9201 False
3 22 2.1878 0.9997 -3.9349 8.3105 False
3 23 2.6293 0.966 -2.5453 7.804 False
3 24 3.1812 0.8581 -2.1964 8.5589 False
3 25 2.6533 0.9952 -3.4694 8.7761 False
3 26 2.9434 0.9277 -2.4343 8.321 False
4 5 -0.7787 1.0 -6.4472 4.8898 False
4 6 -2.6119 0.9684 -7.7865 2.5628 False
4 7 -1.2761 1.0 -6.9446 4.3925 False
4 8 2.9155 0.993 -3.63 9.461 False
4 9 -2.6184 0.9985 -9.1638 3.9271 False
4 10 -1.039 1.0 -6.7075 4.6296 False
4 11 -0.9618 1.0 -5.8161 3.8924 False
4 12 -3.1179 0.9997 -11.7768 5.5409 False
4 13 -1.615 1.0 -6.7897 3.5596 False
4 14 0.5333 1.0 -4.6414 5.7079 False
4 15 -2.1103 0.995 -6.9646 2.744 False
4 16 0.2589 1.0 -5.4097 5.9274 False
4 17 -0.5971 1.0 -5.4514 4.2571 False
4 18 -1.3716 1.0 -5.8316 3.0884 False
4 19 -1.8946 0.9999 -7.5632 3.7739 False
4 20 -1.2423 1.0 -7.7877 5.3032 False
4 21 -1.2992 1.0 -6.4739 3.8754 False
4 22 -1.363 1.0 -7.0316 4.3055 False
4 23 -0.9215 1.0 -5.5498 3.7069 False
4 24 -0.3696 1.0 -5.2238 4.4847 False
4 25 -0.8975 1.0 -6.566 4.7711 False
4 26 -0.6074 1.0 -5.4617 4.2468 False
5 6 -1.8332 1.0 -7.9559 4.2896 False
5 7 -0.4974 1.0 -7.0428 6.0481 False
5 8 3.6942 0.9683 -3.6238 11.0123 False
5 9 -1.8397 1.0 -9.1577 5.4784 False
5 10 -0.2603 1.0 -6.8057 6.2852 False
5 11 -0.1831 1.0 -6.0376 5.6713 False
5 12 -2.3392 1.0 -11.5959 6.9175 False
5 13 -0.8363 1.0 -6.959 5.2864 False
5 14 1.312 1.0 -4.8108 7.4347 False
5 15 -1.3316 1.0 -7.1861 4.5228 False
5 16 1.0376 1.0 -5.5079 7.5831 False
5 17 0.1816 1.0 -5.6729 6.036 False
5 18 -0.5929 1.0 -6.1248 4.939 False
5 19 -1.1159 1.0 -7.6614 5.4296 False
5 20 -0.4636 1.0 -7.7816 6.8545 False
5 21 -0.5205 1.0 -6.6433 5.6022 False
5 22 -0.5843 1.0 -7.1298 5.9612 False
5 23 -0.1428 1.0 -5.8113 5.5258 False
5 24 0.4091 1.0 -5.4453 6.2636 False
5 25 -0.1188 1.0 -6.6643 6.4267 False
5 26 0.1713 1.0 -5.6832 6.0257 False
6 7 1.3358 1.0 -4.7869 7.4585 False
6 8 5.5274 0.3278 -1.4151 12.4699 False
6 9 -0.0065 1.0 -6.949 6.936 False
6 10 1.5729 1.0 -4.5498 7.6956 False
6 11 1.6501 1.0 -3.7276 7.0277 False
6 12 -0.5061 1.0 -9.4688 8.4567 False
6 13 0.9969 1.0 -4.6717 6.6654 False
6 14 3.1451 0.918 -2.5234 8.8137 False
6 15 0.5016 1.0 -4.8761 5.8792 False
6 16 2.8708 0.9866 -3.252 8.9935 False
6 17 2.0147 0.9995 -3.3629 7.3924 False
6 18 1.2403 1.0 -3.7844 6.2649 False
6 19 0.7173 1.0 -5.4055 6.84 False
6 20 1.3696 1.0 -5.5729 8.3121 False
6 21 1.3126 1.0 -4.3559 6.9812 False
6 22 1.2489 1.0 -4.8739 7.3716 False
6 23 1.6904 0.9999 -3.4843 6.865 False
6 24 2.2423 0.9972 -3.1354 7.62 False
6 25 1.7144 1.0 -4.4083 7.8371 False
6 26 2.0044 0.9995 -3.3732 7.3821 False
7 8 4.1916 0.8913 -3.1265 11.5096 False
7 9 -1.3423 1.0 -8.6604 5.9758 False
7 10 0.2371 1.0 -6.3084 6.7826 False
7 11 0.3142 1.0 -5.5402 6.1687 False
7 12 -1.8419 1.0 -11.0986 7.4148 False
7 13 -0.3389 1.0 -6.4617 5.7838 False
7 14 1.8093 1.0 -4.3134 7.9321 False
7 15 -0.8342 1.0 -6.6887 5.0202 False
7 16 1.535 1.0 -5.0105 8.0804 False
7 17 0.6789 1.0 -5.1755 6.5334 False
7 18 -0.0955 1.0 -5.6275 5.4364 False
7 19 -0.6185 1.0 -7.164 5.9269 False
7 20 0.0338 1.0 -7.2843 7.3519 False
7 21 -0.0232 1.0 -6.1459 6.0996 False
7 22 -0.0869 1.0 -6.6324 6.4585 False
7 23 0.3546 1.0 -5.314 6.0231 False
7 24 0.9065 1.0 -4.948 6.7609 False
7 25 0.3786 1.0 -6.1669 6.9241 False
7 26 0.6686 1.0 -5.1858 6.5231 False
8 9 -5.5339 0.614 -13.5504 2.4826 False
8 10 -3.9545 0.936 -11.2726 3.3636 False
8 11 -3.8773 0.8824 -10.5845 2.8298 False
8 12 -6.0334 0.8108 -15.8517 3.7848 False
8 13 -4.5305 0.7179 -11.4731 2.412 False
8 14 -2.3823 0.9999 -9.3248 4.5603 False
8 15 -5.0258 0.4475 -11.7329 1.6813 False
8 16 -2.6566 0.9997 -9.9747 4.6614 False
8 17 -3.5127 0.9532 -10.2198 3.1945 False
8 18 -4.2871 0.6791 -10.7147 2.1404 False
8 19 -4.8101 0.7054 -12.1282 2.5079 False
8 20 -4.1578 0.9577 -12.1743 3.8588 False
8 21 -4.2148 0.8269 -11.1573 2.7278 False
8 22 -4.2785 0.8709 -11.5966 3.0395 False
8 23 -3.837 0.8681 -10.3825 2.7085 False
8 24 -3.2851 0.9774 -9.9922 3.422 False
8 25 -3.813 0.9556 -11.1311 3.5051 False
8 26 -3.523 0.9518 -10.2301 3.1842 False
9 10 1.5794 1.0 -5.7387 8.8975 False
9 11 1.6565 1.0 -5.0506 8.3637 False
9 12 -0.4996 1.0 -10.3178 9.3187 False
9 13 1.0034 1.0 -5.9392 7.9459 False
9 14 3.1516 0.9911 -3.7909 10.0942 False
9 15 0.5081 1.0 -6.199 7.2152 False
9 16 2.8773 0.9988 -4.4408 10.1953 False
9 17 2.0212 1.0 -4.6859 8.7284 False
9 18 1.2468 1.0 -5.1808 7.6743 False
9 19 0.7238 1.0 -6.5943 8.0418 False
9 20 1.3761 1.0 -6.6404 9.3926 False
9 21 1.3191 1.0 -5.6234 8.2617 False
9 22 1.2554 1.0 -6.0627 8.5734 False
9 23 1.6969 1.0 -4.8486 8.2424 False
9 24 2.2488 0.9999 -4.4583 8.9559 False
9 25 1.7209 1.0 -5.5972 9.039 False
9 26 2.0109 1.0 -4.6962 8.7181 False
10 11 0.0771 1.0 -5.7773 5.9316 False
10 12 -2.079 1.0 -11.3357 7.1777 False
10 13 -0.576 1.0 -6.6988 5.5467 False
10 14 1.5722 1.0 -4.5505 7.695 False
10 15 -1.0713 1.0 -6.9258 4.7831 False
10 16 1.2979 1.0 -5.2476 7.8433 False
10 17 0.4418 1.0 -5.4126 6.2963 False
10 18 -0.3326 1.0 -5.8646 5.1993 False
10 19 -0.8556 1.0 -7.4011 5.6898 False
10 20 -0.2033 1.0 -7.5214 7.1148 False
10 21 -0.2603 1.0 -6.383 5.8625 False
10 22 -0.324 1.0 -6.8695 6.2214 False
10 23 0.1175 1.0 -5.5511 5.786 False
10 24 0.6694 1.0 -5.1851 6.5238 False
10 25 0.1415 1.0 -6.404 6.687 False
10 26 0.4315 1.0 -5.4229 6.286 False
11 12 -2.1561 1.0 -10.9378 6.6256 False
11 13 -0.6532 1.0 -6.0309 4.7245 False
11 14 1.4951 1.0 -3.8826 6.8727 False
11 15 -1.1485 1.0 -6.2186 3.9216 False
11 16 1.2207 1.0 -4.6337 7.0752 False
11 17 0.3647 1.0 -4.7054 5.4348 False
11 18 -0.4098 1.0 -5.1038 4.2842 False
11 19 -0.9328 1.0 -6.7872 4.9217 False
11 20 -0.2804 1.0 -6.9876 6.4267 False
11 21 -0.3374 1.0 -5.7151 5.0402 False
11 22 -0.4012 1.0 -6.2556 5.4533 False
11 23 0.0403 1.0 -4.8139 4.8946 False
11 24 0.5923 1.0 -4.4779 5.6624 False
11 25 0.0643 1.0 -5.7901 5.9188 False
11 26 0.3544 1.0 -4.7157 5.4245 False
12 13 1.5029 1.0 -7.4599 10.4657 False
12 14 3.6512 0.998 -5.3116 12.614 False
12 15 1.0076 1.0 -7.7741 9.7893 False
12 16 3.3768 0.9996 -5.8799 12.6335 False
12 17 2.5208 1.0 -6.2609 11.3025 False
12 18 1.7463 1.0 -6.8237 10.3164 False
12 19 1.2233 1.0 -8.0334 10.48 False
12 20 1.8757 1.0 -7.9426 11.6939 False
12 21 1.8187 1.0 -7.1441 10.7814 False
12 22 1.7549 1.0 -7.5018 11.0116 False
12 23 2.1964 1.0 -6.4624 10.8553 False
12 24 2.7484 1.0 -6.0333 11.53 False
12 25 2.2204 1.0 -7.0363 11.4771 False
12 26 2.5105 1.0 -6.2712 11.2922 False
13 14 2.1483 0.9993 -3.5203 7.8168 False
13 15 -0.4953 1.0 -5.8729 4.8824 False
13 16 1.8739 1.0 -4.2488 7.9966 False
13 17 1.0179 1.0 -4.3598 6.3955 False
13 18 0.2434 1.0 -4.7812 5.268 False
13 19 -0.2796 1.0 -6.4023 5.8431 False
13 20 0.3728 1.0 -6.5698 7.3153 False
13 21 0.3158 1.0 -5.3528 5.9843 False
13 22 0.252 1.0 -5.8707 6.3747 False
13 23 0.6935 1.0 -4.4811 5.8682 False
13 24 1.2454 1.0 -4.1322 6.6231 False
13 25 0.7175 1.0 -5.4052 6.8403 False
13 26 1.0076 1.0 -4.3701 6.3852 False
14 15 -2.6436 0.9765 -8.0212 2.7341 False
14 16 -0.2744 1.0 -6.3971 5.8484 False
14 17 -1.1304 1.0 -6.5081 4.2473 False
14 18 -1.9049 0.9993 -6.9295 3.1198 False
14 19 -2.4279 0.9987 -8.5506 3.6949 False
14 20 -1.7755 1.0 -8.7181 5.167 False
14 21 -1.8325 1.0 -7.5011 3.836 False
14 22 -1.8963 1.0 -8.019 4.2265 False
14 23 -1.4548 1.0 -6.6294 3.7199 False
14 24 -0.9028 1.0 -6.2805 4.4748 False
14 25 -1.4307 1.0 -7.5535 4.692 False
14 26 -1.1407 1.0 -6.5184 4.237 False
15 16 2.3692 0.9982 -3.4853 8.2236 False
15 17 1.5132 1.0 -3.5569 6.5833 False
15 18 0.7387 1.0 -3.9553 5.4327 False
15 19 0.2157 1.0 -5.6388 6.0701 False
15 20 0.868 1.0 -5.8391 7.5752 False
15 21 0.8111 1.0 -4.5666 6.1887 False
15 22 0.7473 1.0 -5.1072 6.6018 False
15 23 1.1888 1.0 -3.6654 6.0431 False
15 24 1.7407 0.9999 -3.3294 6.8108 False
15 25 1.2128 1.0 -4.6416 7.0673 False
15 26 1.5029 1.0 -3.5672 6.573 False
16 17 -0.856 1.0 -6.7105 4.9984 False
16 18 -1.6305 1.0 -7.1624 3.9014 False
16 19 -2.1535 0.9999 -8.699 4.392 False
16 20 -1.5011 1.0 -8.8192 5.8169 False
16 21 -1.5581 1.0 -7.6809 4.5646 False
16 22 -1.6219 1.0 -8.1674 4.9236 False
16 23 -1.1804 1.0 -6.8489 4.4882 False
16 24 -0.6285 1.0 -6.4829 5.226 False
16 25 -1.1564 1.0 -7.7018 5.3891 False
16 26 -0.8663 1.0 -6.7208 4.9881 False
17 18 -0.7745 1.0 -5.4685 3.9195 False
17 19 -1.2975 1.0 -7.1519 4.557 False
17 20 -0.6451 1.0 -7.3522 6.062 False
17 21 -0.7021 1.0 -6.0798 4.6756 False
17 22 -0.7659 1.0 -6.6203 5.0886 False
17 23 -0.3244 1.0 -5.1786 4.5299 False
17 24 0.2276 1.0 -4.8425 5.2977 False
17 25 -0.3003 1.0 -6.1548 5.5541 False
17 26 -0.0103 1.0 -5.0804 5.0598 False
18 19 -0.523 1.0 -6.0549 5.0089 False
18 20 0.1293 1.0 -6.2982 6.5569 False
18 21 0.0724 1.0 -4.9523 5.097 False
18 22 0.0086 1.0 -5.5233 5.5405 False
18 23 0.4501 1.0 -4.0099 4.9101 False
18 24 1.002 1.0 -3.692 5.696 False
18 25 0.4741 1.0 -5.0578 6.0061 False
18 26 0.7642 1.0 -3.9298 5.4582 False
19 20 0.6523 1.0 -6.6657 7.9704 False
19 21 0.5954 1.0 -5.5274 6.7181 False
19 22 0.5316 1.0 -6.0139 7.0771 False
19 23 0.9731 1.0 -4.6954 6.6417 False
19 24 1.525 1.0 -4.3294 7.3795 False
19 25 0.9971 1.0 -5.5484 7.5426 False
19 26 1.2872 1.0 -4.5673 7.1416 False
20 21 -0.057 1.0 -6.9995 6.8855 False
20 22 -0.1207 1.0 -7.4388 7.1973 False
20 23 0.3208 1.0 -6.2247 6.8662 False
20 24 0.8727 1.0 -5.8344 7.5798 False
20 25 0.3448 1.0 -6.9733 7.6628 False
20 26 0.6348 1.0 -6.0723 7.3419 False
21 22 -0.0638 1.0 -6.1865 6.059 False
21 23 0.3777 1.0 -4.7969 5.5524 False
21 24 0.9297 1.0 -4.448 6.3073 False
21 25 0.4018 1.0 -5.721 6.5245 False
21 26 0.6918 1.0 -4.6859 6.0695 False
22 23 0.4415 1.0 -5.227 6.1101 False
22 24 0.9934 1.0 -4.861 6.8479 False
22 25 0.4655 1.0 -6.08 7.011 False
22 26 0.7556 1.0 -5.0989 6.61 False
23 24 0.5519 1.0 -4.3023 5.4062 False
23 25 0.024 1.0 -5.6445 5.6926 False
23 26 0.3141 1.0 -4.5402 5.1683 False
24 25 -0.5279 1.0 -6.3824 5.3265 False
24 26 -0.2379 1.0 -5.308 4.8322 False
25 26 0.29 1.0 -5.5644 6.1445 False
-----------------------------------------------------
# Generate all combinations of factor levels
factor_combinations = list(product(*factor_levels.values()))
# Perform Tukey's HSD test for the three-way interaction
mc = MultiComparison(data['WeightGain'], data.groupby(factors).grouper.group_info[0])
result = mc.tukeyhsd()
print(f"Tukey's HSD Test for Interaction between Diet, Housing, and Season (Three-way Interaction):")
print(result)
Tukey's HSD Test for Interaction between Diet, Housing, and Season (Three-way Interaction):
Multiple Comparison of Means - Tukey HSD, FWER=0.05
=====================================================
group1 group2 meandiff p-adj lower upper reject
-----------------------------------------------------
0 1 -2.4875 0.9981 -8.6103 3.6352 False
0 2 -0.2449 1.0 -9.2077 8.7179 False
0 3 -3.3529 0.8583 -9.0215 2.3156 False
0 4 0.1979 1.0 -4.9768 5.3725 False
0 5 -0.5808 1.0 -6.7035 5.5419 False
0 6 -2.414 0.9962 -8.0825 3.2546 False
0 7 -1.0782 1.0 -7.2009 5.0446 False
0 8 3.1134 0.9924 -3.8291 10.0559 False
0 9 -2.4205 0.9998 -9.363 4.522 False
0 10 -0.8411 1.0 -6.9638 5.2816 False
0 11 -0.7639 1.0 -6.1416 4.6137 False
0 12 -2.92 0.9999 -11.8828 6.0427 False
0 13 -1.4171 1.0 -7.0857 4.2514 False
0 14 0.7312 1.0 -4.9374 6.3997 False
0 15 -1.9124 0.9998 -7.2901 3.4652 False
0 16 0.4568 1.0 -5.666 6.5795 False
0 17 -0.3993 1.0 -5.7769 4.9784 False
0 18 -1.1737 1.0 -6.1984 3.8509 False
0 19 -1.6967 1.0 -7.8195 4.426 False
0 20 -1.0444 1.0 -7.9869 5.8981 False
0 21 -1.1014 1.0 -6.7699 4.5672 False
0 22 -1.1651 1.0 -7.2878 4.9576 False
0 23 -0.7236 1.0 -5.8983 4.451 False
0 24 -0.1717 1.0 -5.5493 5.206 False
0 25 -0.6996 1.0 -6.8223 5.4231 False
0 26 -0.4096 1.0 -5.7872 4.9681 False
1 2 2.2427 1.0 -7.014 11.4994 False
1 3 -0.8654 1.0 -6.9881 5.2573 False
1 4 2.6854 0.9848 -2.9831 8.354 False
1 5 1.9067 1.0 -4.6387 8.4522 False
1 6 0.0736 1.0 -6.0492 6.1963 False
1 7 1.4094 1.0 -5.1361 7.9548 False
1 8 5.6009 0.4046 -1.7171 12.919 False
1 9 0.0671 1.0 -7.251 7.3851 False
1 10 1.6465 1.0 -4.899 8.1919 False
1 11 1.7236 1.0 -4.1308 7.5781 False
1 12 -0.4325 1.0 -9.6892 8.8242 False
1 13 1.0704 1.0 -5.0523 7.1931 False
1 14 3.2187 0.9513 -2.904 9.3414 False
1 15 0.5751 1.0 -5.2793 6.4296 False
1 16 2.9443 0.9921 -3.6012 9.4898 False
1 17 2.0883 0.9998 -3.7662 7.9427 False
1 18 1.3138 1.0 -4.2181 6.8458 False
1 19 0.7908 1.0 -5.7547 7.3363 False
1 20 1.4432 1.0 -5.8749 8.7612 False
1 21 1.3862 1.0 -4.7365 7.5089 False
1 22 1.3224 1.0 -5.2231 7.8679 False
1 23 1.7639 1.0 -3.9046 7.4325 False
1 24 2.3159 0.9987 -3.5386 8.1703 False
1 25 1.7879 1.0 -4.7575 8.3334 False
1 26 2.078 0.9998 -3.7765 7.9324 False
2 3 -3.108 0.9998 -12.0708 5.8547 False
2 4 0.4428 1.0 -8.2161 9.1016 False
2 5 -0.3359 1.0 -9.5926 8.9208 False
2 6 -2.1691 1.0 -11.1319 6.7937 False
2 7 -0.8333 1.0 -10.09 8.4234 False
2 8 3.3583 0.9999 -6.4599 13.1765 False
2 9 -2.1756 1.0 -11.9938 7.6426 False
2 10 -0.5962 1.0 -9.8529 8.6605 False
2 11 -0.519 1.0 -9.3007 8.2626 False
2 12 -2.6752 1.0 -14.0122 8.6619 False
2 13 -1.1722 1.0 -10.135 7.7905 False
2 14 0.976 1.0 -7.9867 9.9388 False
2 15 -1.6675 1.0 -10.4492 7.1141 False
2 16 0.7017 1.0 -8.555 9.9584 False
2 17 -0.1544 1.0 -8.936 8.6273 False
2 18 -0.9288 1.0 -9.4989 7.6412 False
2 19 -1.4518 1.0 -10.7085 7.8049 False
2 20 -0.7995 1.0 -10.6177 9.0187 False
2 21 -0.8565 1.0 -9.8192 8.1063 False
2 22 -0.9202 1.0 -10.1769 8.3365 False
2 23 -0.4787 1.0 -9.1376 8.1801 False
2 24 0.0732 1.0 -8.7085 8.8549 False
2 25 -0.4547 1.0 -9.7114 8.802 False
2 26 -0.1647 1.0 -8.9463 8.617 False
3 4 3.5508 0.6257 -1.6238 8.7255 False
3 5 2.7721 0.9914 -3.3506 8.8948 False
3 6 0.9389 1.0 -4.7296 6.6075 False
3 7 2.2747 0.9995 -3.848 8.3975 False
3 8 6.4663 0.1024 -0.4762 13.4089 False
3 9 0.9324 1.0 -6.0101 7.875 False
3 10 2.5118 0.9978 -3.6109 8.6346 False
3 11 2.589 0.9815 -2.7887 7.9666 False
3 12 0.4329 1.0 -8.5299 9.3956 False
3 13 1.9358 0.9999 -3.7328 7.6043 False
3 14 4.0841 0.5281 -1.5845 9.7526 False
3 15 1.4405 1.0 -3.9371 6.8182 False
3 16 3.8097 0.7933 -2.313 9.9324 False
3 17 2.9537 0.9253 -2.424 8.3313 False
3 18 2.1792 0.9951 -2.8454 7.2038 False
3 19 1.6562 1.0 -4.4665 7.7789 False
3 20 2.3086 0.9999 -4.634 9.2511 False
3 21 2.2516 0.9986 -3.417 7.9201 False
3 22 2.1878 0.9997 -3.9349 8.3105 False
3 23 2.6293 0.966 -2.5453 7.804 False
3 24 3.1812 0.8581 -2.1964 8.5589 False
3 25 2.6533 0.9952 -3.4694 8.7761 False
3 26 2.9434 0.9277 -2.4343 8.321 False
4 5 -0.7787 1.0 -6.4472 4.8898 False
4 6 -2.6119 0.9684 -7.7865 2.5628 False
4 7 -1.2761 1.0 -6.9446 4.3925 False
4 8 2.9155 0.993 -3.63 9.461 False
4 9 -2.6184 0.9985 -9.1638 3.9271 False
4 10 -1.039 1.0 -6.7075 4.6296 False
4 11 -0.9618 1.0 -5.8161 3.8924 False
4 12 -3.1179 0.9997 -11.7768 5.5409 False
4 13 -1.615 1.0 -6.7897 3.5596 False
4 14 0.5333 1.0 -4.6414 5.7079 False
4 15 -2.1103 0.995 -6.9646 2.744 False
4 16 0.2589 1.0 -5.4097 5.9274 False
4 17 -0.5971 1.0 -5.4514 4.2571 False
4 18 -1.3716 1.0 -5.8316 3.0884 False
4 19 -1.8946 0.9999 -7.5632 3.7739 False
4 20 -1.2423 1.0 -7.7877 5.3032 False
4 21 -1.2992 1.0 -6.4739 3.8754 False
4 22 -1.363 1.0 -7.0316 4.3055 False
4 23 -0.9215 1.0 -5.5498 3.7069 False
4 24 -0.3696 1.0 -5.2238 4.4847 False
4 25 -0.8975 1.0 -6.566 4.7711 False
4 26 -0.6074 1.0 -5.4617 4.2468 False
5 6 -1.8332 1.0 -7.9559 4.2896 False
5 7 -0.4974 1.0 -7.0428 6.0481 False
5 8 3.6942 0.9683 -3.6238 11.0123 False
5 9 -1.8397 1.0 -9.1577 5.4784 False
5 10 -0.2603 1.0 -6.8057 6.2852 False
5 11 -0.1831 1.0 -6.0376 5.6713 False
5 12 -2.3392 1.0 -11.5959 6.9175 False
5 13 -0.8363 1.0 -6.959 5.2864 False
5 14 1.312 1.0 -4.8108 7.4347 False
5 15 -1.3316 1.0 -7.1861 4.5228 False
5 16 1.0376 1.0 -5.5079 7.5831 False
5 17 0.1816 1.0 -5.6729 6.036 False
5 18 -0.5929 1.0 -6.1248 4.939 False
5 19 -1.1159 1.0 -7.6614 5.4296 False
5 20 -0.4636 1.0 -7.7816 6.8545 False
5 21 -0.5205 1.0 -6.6433 5.6022 False
5 22 -0.5843 1.0 -7.1298 5.9612 False
5 23 -0.1428 1.0 -5.8113 5.5258 False
5 24 0.4091 1.0 -5.4453 6.2636 False
5 25 -0.1188 1.0 -6.6643 6.4267 False
5 26 0.1713 1.0 -5.6832 6.0257 False
6 7 1.3358 1.0 -4.7869 7.4585 False
6 8 5.5274 0.3278 -1.4151 12.4699 False
6 9 -0.0065 1.0 -6.949 6.936 False
6 10 1.5729 1.0 -4.5498 7.6956 False
6 11 1.6501 1.0 -3.7276 7.0277 False
6 12 -0.5061 1.0 -9.4688 8.4567 False
6 13 0.9969 1.0 -4.6717 6.6654 False
6 14 3.1451 0.918 -2.5234 8.8137 False
6 15 0.5016 1.0 -4.8761 5.8792 False
6 16 2.8708 0.9866 -3.252 8.9935 False
6 17 2.0147 0.9995 -3.3629 7.3924 False
6 18 1.2403 1.0 -3.7844 6.2649 False
6 19 0.7173 1.0 -5.4055 6.84 False
6 20 1.3696 1.0 -5.5729 8.3121 False
6 21 1.3126 1.0 -4.3559 6.9812 False
6 22 1.2489 1.0 -4.8739 7.3716 False
6 23 1.6904 0.9999 -3.4843 6.865 False
6 24 2.2423 0.9972 -3.1354 7.62 False
6 25 1.7144 1.0 -4.4083 7.8371 False
6 26 2.0044 0.9995 -3.3732 7.3821 False
7 8 4.1916 0.8913 -3.1265 11.5096 False
7 9 -1.3423 1.0 -8.6604 5.9758 False
7 10 0.2371 1.0 -6.3084 6.7826 False
7 11 0.3142 1.0 -5.5402 6.1687 False
7 12 -1.8419 1.0 -11.0986 7.4148 False
7 13 -0.3389 1.0 -6.4617 5.7838 False
7 14 1.8093 1.0 -4.3134 7.9321 False
7 15 -0.8342 1.0 -6.6887 5.0202 False
7 16 1.535 1.0 -5.0105 8.0804 False
7 17 0.6789 1.0 -5.1755 6.5334 False
7 18 -0.0955 1.0 -5.6275 5.4364 False
7 19 -0.6185 1.0 -7.164 5.9269 False
7 20 0.0338 1.0 -7.2843 7.3519 False
7 21 -0.0232 1.0 -6.1459 6.0996 False
7 22 -0.0869 1.0 -6.6324 6.4585 False
7 23 0.3546 1.0 -5.314 6.0231 False
7 24 0.9065 1.0 -4.948 6.7609 False
7 25 0.3786 1.0 -6.1669 6.9241 False
7 26 0.6686 1.0 -5.1858 6.5231 False
8 9 -5.5339 0.614 -13.5504 2.4826 False
8 10 -3.9545 0.936 -11.2726 3.3636 False
8 11 -3.8773 0.8824 -10.5845 2.8298 False
8 12 -6.0334 0.8108 -15.8517 3.7848 False
8 13 -4.5305 0.7179 -11.4731 2.412 False
8 14 -2.3823 0.9999 -9.3248 4.5603 False
8 15 -5.0258 0.4475 -11.7329 1.6813 False
8 16 -2.6566 0.9997 -9.9747 4.6614 False
8 17 -3.5127 0.9532 -10.2198 3.1945 False
8 18 -4.2871 0.6791 -10.7147 2.1404 False
8 19 -4.8101 0.7054 -12.1282 2.5079 False
8 20 -4.1578 0.9577 -12.1743 3.8588 False
8 21 -4.2148 0.8269 -11.1573 2.7278 False
8 22 -4.2785 0.8709 -11.5966 3.0395 False
8 23 -3.837 0.8681 -10.3825 2.7085 False
8 24 -3.2851 0.9774 -9.9922 3.422 False
8 25 -3.813 0.9556 -11.1311 3.5051 False
8 26 -3.523 0.9518 -10.2301 3.1842 False
9 10 1.5794 1.0 -5.7387 8.8975 False
9 11 1.6565 1.0 -5.0506 8.3637 False
9 12 -0.4996 1.0 -10.3178 9.3187 False
9 13 1.0034 1.0 -5.9392 7.9459 False
9 14 3.1516 0.9911 -3.7909 10.0942 False
9 15 0.5081 1.0 -6.199 7.2152 False
9 16 2.8773 0.9988 -4.4408 10.1953 False
9 17 2.0212 1.0 -4.6859 8.7284 False
9 18 1.2468 1.0 -5.1808 7.6743 False
9 19 0.7238 1.0 -6.5943 8.0418 False
9 20 1.3761 1.0 -6.6404 9.3926 False
9 21 1.3191 1.0 -5.6234 8.2617 False
9 22 1.2554 1.0 -6.0627 8.5734 False
9 23 1.6969 1.0 -4.8486 8.2424 False
9 24 2.2488 0.9999 -4.4583 8.9559 False
9 25 1.7209 1.0 -5.5972 9.039 False
9 26 2.0109 1.0 -4.6962 8.7181 False
10 11 0.0771 1.0 -5.7773 5.9316 False
10 12 -2.079 1.0 -11.3357 7.1777 False
10 13 -0.576 1.0 -6.6988 5.5467 False
10 14 1.5722 1.0 -4.5505 7.695 False
10 15 -1.0713 1.0 -6.9258 4.7831 False
10 16 1.2979 1.0 -5.2476 7.8433 False
10 17 0.4418 1.0 -5.4126 6.2963 False
10 18 -0.3326 1.0 -5.8646 5.1993 False
10 19 -0.8556 1.0 -7.4011 5.6898 False
10 20 -0.2033 1.0 -7.5214 7.1148 False
10 21 -0.2603 1.0 -6.383 5.8625 False
10 22 -0.324 1.0 -6.8695 6.2214 False
10 23 0.1175 1.0 -5.5511 5.786 False
10 24 0.6694 1.0 -5.1851 6.5238 False
10 25 0.1415 1.0 -6.404 6.687 False
10 26 0.4315 1.0 -5.4229 6.286 False
11 12 -2.1561 1.0 -10.9378 6.6256 False
11 13 -0.6532 1.0 -6.0309 4.7245 False
11 14 1.4951 1.0 -3.8826 6.8727 False
11 15 -1.1485 1.0 -6.2186 3.9216 False
11 16 1.2207 1.0 -4.6337 7.0752 False
11 17 0.3647 1.0 -4.7054 5.4348 False
11 18 -0.4098 1.0 -5.1038 4.2842 False
11 19 -0.9328 1.0 -6.7872 4.9217 False
11 20 -0.2804 1.0 -6.9876 6.4267 False
11 21 -0.3374 1.0 -5.7151 5.0402 False
11 22 -0.4012 1.0 -6.2556 5.4533 False
11 23 0.0403 1.0 -4.8139 4.8946 False
11 24 0.5923 1.0 -4.4779 5.6624 False
11 25 0.0643 1.0 -5.7901 5.9188 False
11 26 0.3544 1.0 -4.7157 5.4245 False
12 13 1.5029 1.0 -7.4599 10.4657 False
12 14 3.6512 0.998 -5.3116 12.614 False
12 15 1.0076 1.0 -7.7741 9.7893 False
12 16 3.3768 0.9996 -5.8799 12.6335 False
12 17 2.5208 1.0 -6.2609 11.3025 False
12 18 1.7463 1.0 -6.8237 10.3164 False
12 19 1.2233 1.0 -8.0334 10.48 False
12 20 1.8757 1.0 -7.9426 11.6939 False
12 21 1.8187 1.0 -7.1441 10.7814 False
12 22 1.7549 1.0 -7.5018 11.0116 False
12 23 2.1964 1.0 -6.4624 10.8553 False
12 24 2.7484 1.0 -6.0333 11.53 False
12 25 2.2204 1.0 -7.0363 11.4771 False
12 26 2.5105 1.0 -6.2712 11.2922 False
13 14 2.1483 0.9993 -3.5203 7.8168 False
13 15 -0.4953 1.0 -5.8729 4.8824 False
13 16 1.8739 1.0 -4.2488 7.9966 False
13 17 1.0179 1.0 -4.3598 6.3955 False
13 18 0.2434 1.0 -4.7812 5.268 False
13 19 -0.2796 1.0 -6.4023 5.8431 False
13 20 0.3728 1.0 -6.5698 7.3153 False
13 21 0.3158 1.0 -5.3528 5.9843 False
13 22 0.252 1.0 -5.8707 6.3747 False
13 23 0.6935 1.0 -4.4811 5.8682 False
13 24 1.2454 1.0 -4.1322 6.6231 False
13 25 0.7175 1.0 -5.4052 6.8403 False
13 26 1.0076 1.0 -4.3701 6.3852 False
14 15 -2.6436 0.9765 -8.0212 2.7341 False
14 16 -0.2744 1.0 -6.3971 5.8484 False
14 17 -1.1304 1.0 -6.5081 4.2473 False
14 18 -1.9049 0.9993 -6.9295 3.1198 False
14 19 -2.4279 0.9987 -8.5506 3.6949 False
14 20 -1.7755 1.0 -8.7181 5.167 False
14 21 -1.8325 1.0 -7.5011 3.836 False
14 22 -1.8963 1.0 -8.019 4.2265 False
14 23 -1.4548 1.0 -6.6294 3.7199 False
14 24 -0.9028 1.0 -6.2805 4.4748 False
14 25 -1.4307 1.0 -7.5535 4.692 False
14 26 -1.1407 1.0 -6.5184 4.237 False
15 16 2.3692 0.9982 -3.4853 8.2236 False
15 17 1.5132 1.0 -3.5569 6.5833 False
15 18 0.7387 1.0 -3.9553 5.4327 False
15 19 0.2157 1.0 -5.6388 6.0701 False
15 20 0.868 1.0 -5.8391 7.5752 False
15 21 0.8111 1.0 -4.5666 6.1887 False
15 22 0.7473 1.0 -5.1072 6.6018 False
15 23 1.1888 1.0 -3.6654 6.0431 False
15 24 1.7407 0.9999 -3.3294 6.8108 False
15 25 1.2128 1.0 -4.6416 7.0673 False
15 26 1.5029 1.0 -3.5672 6.573 False
16 17 -0.856 1.0 -6.7105 4.9984 False
16 18 -1.6305 1.0 -7.1624 3.9014 False
16 19 -2.1535 0.9999 -8.699 4.392 False
16 20 -1.5011 1.0 -8.8192 5.8169 False
16 21 -1.5581 1.0 -7.6809 4.5646 False
16 22 -1.6219 1.0 -8.1674 4.9236 False
16 23 -1.1804 1.0 -6.8489 4.4882 False
16 24 -0.6285 1.0 -6.4829 5.226 False
16 25 -1.1564 1.0 -7.7018 5.3891 False
16 26 -0.8663 1.0 -6.7208 4.9881 False
17 18 -0.7745 1.0 -5.4685 3.9195 False
17 19 -1.2975 1.0 -7.1519 4.557 False
17 20 -0.6451 1.0 -7.3522 6.062 False
17 21 -0.7021 1.0 -6.0798 4.6756 False
17 22 -0.7659 1.0 -6.6203 5.0886 False
17 23 -0.3244 1.0 -5.1786 4.5299 False
17 24 0.2276 1.0 -4.8425 5.2977 False
17 25 -0.3003 1.0 -6.1548 5.5541 False
17 26 -0.0103 1.0 -5.0804 5.0598 False
18 19 -0.523 1.0 -6.0549 5.0089 False
18 20 0.1293 1.0 -6.2982 6.5569 False
18 21 0.0724 1.0 -4.9523 5.097 False
18 22 0.0086 1.0 -5.5233 5.5405 False
18 23 0.4501 1.0 -4.0099 4.9101 False
18 24 1.002 1.0 -3.692 5.696 False
18 25 0.4741 1.0 -5.0578 6.0061 False
18 26 0.7642 1.0 -3.9298 5.4582 False
19 20 0.6523 1.0 -6.6657 7.9704 False
19 21 0.5954 1.0 -5.5274 6.7181 False
19 22 0.5316 1.0 -6.0139 7.0771 False
19 23 0.9731 1.0 -4.6954 6.6417 False
19 24 1.525 1.0 -4.3294 7.3795 False
19 25 0.9971 1.0 -5.5484 7.5426 False
19 26 1.2872 1.0 -4.5673 7.1416 False
20 21 -0.057 1.0 -6.9995 6.8855 False
20 22 -0.1207 1.0 -7.4388 7.1973 False
20 23 0.3208 1.0 -6.2247 6.8662 False
20 24 0.8727 1.0 -5.8344 7.5798 False
20 25 0.3448 1.0 -6.9733 7.6628 False
20 26 0.6348 1.0 -6.0723 7.3419 False
21 22 -0.0638 1.0 -6.1865 6.059 False
21 23 0.3777 1.0 -4.7969 5.5524 False
21 24 0.9297 1.0 -4.448 6.3073 False
21 25 0.4018 1.0 -5.721 6.5245 False
21 26 0.6918 1.0 -4.6859 6.0695 False
22 23 0.4415 1.0 -5.227 6.1101 False
22 24 0.9934 1.0 -4.861 6.8479 False
22 25 0.4655 1.0 -6.08 7.011 False
22 26 0.7556 1.0 -5.0989 6.61 False
23 24 0.5519 1.0 -4.3023 5.4062 False
23 25 0.024 1.0 -5.6445 5.6926 False
23 26 0.3141 1.0 -4.5402 5.1683 False
24 25 -0.5279 1.0 -6.3824 5.3265 False
24 26 -0.2379 1.0 -5.308 4.8322 False
25 26 0.29 1.0 -5.5644 6.1445 False
-----------------------------------------------------
To visualize the interaction among the three factors (Diet, Housing, and Season), you can create a plot that shows how the mean WeightGain varies across different combinations of these factors. One effective way to visualize such interactions is by using a 3D plot or a faceted plot (also known as small multiples).
# Using Faceted Plot (seaborn):
sns.set(style="whitegrid")
g = sns.catplot(x='Diet', y='WeightGain', hue='Season', col='Housing', data=data, kind='point', aspect=1.2)
g.set_axis_labels("Diet", "Mean Weight Gain")
g.set_titles("Housing: {col_name}")
plt.subplots_adjust(top=0.85)
g.fig.suptitle('Interaction Plot of Diet, Housing, and Season on Weight Gain', fontsize=16)
plt.show()
This cell creates a 3D surface plot to visualize the predicted WeightGain based on Diet, Housing, and Season.
# Extract unique levels of Season from the original data
season_levels = data['Season'].unique()
# Create a grid for the surface plot
diet_levels = ['Diet1', 'Diet2', 'Diet3']
housing_levels = ['Housing1', 'Housing2', 'Housing3']
# Create the grid for predictions
grid = pd.DataFrame({
'Diet': np.repeat(diet_levels, len(housing_levels) * len(season_levels)),
'Housing': np.tile(np.repeat(housing_levels, len(season_levels)), len(diet_levels)),
'Season': np.tile(season_levels, len(diet_levels) * len(housing_levels))
})
# Ensure the grid levels match those used in the model
grid['Diet'] = pd.Categorical(grid['Diet'], categories=diet_levels)
grid['Housing'] = pd.Categorical(grid['Housing'], categories=housing_levels)
grid['Season'] = pd.Categorical(grid['Season'], categories=season_levels)
# Predict weight gain using the fitted model
grid['PredictedWeightGain'] = model.predict(grid)
# Map categorical variables to numeric for plotting
diet_numeric = {level: i for i, level in enumerate(diet_levels)}
housing_numeric = {level: i for i, level in enumerate(housing_levels)}
season_numeric = {level: i for i, level in enumerate(season_levels)}
# Map the data for plotting
grid['Diet_num'] = grid['Diet'].map(diet_numeric)
grid['Housing_num'] = grid['Housing'].map(housing_numeric)
# Create the surface plot
surface_plot = go.Surface(
x=grid['Diet_num'].values.reshape(len(diet_levels), len(housing_levels) * len(season_levels)),
y=grid['Housing_num'].values.reshape(len(diet_levels), len(housing_levels) * len(season_levels)),
z=grid['PredictedWeightGain'].values.reshape(len(diet_levels), len(housing_levels) * len(season_levels)),
colorscale='Viridis'
)
# Scatter plot
season_colors = {'Winter': 'blue', 'Summer': 'red', 'Spring': 'green'}
data['SeasonColor'] = data['Season'].map(season_colors)
scatter_plot = go.Scatter3d(
x=data['Diet'].map(diet_numeric),
y=data['Housing'].map(housing_numeric),
z=data['WeightGain'],
mode='markers',
marker=dict(size=5, color=data['SeasonColor'])
)
# Create and display the surface plot separately
fig_surface = go.Figure(surface_plot)
fig_surface.update_layout(
title='3D Surface Plot of Diet, Housing, and Weight Gain',
scene=dict(
xaxis=dict(title='Diet', tickvals=list(diet_numeric.values()), ticktext=list(diet_numeric.keys()), tickangle=-45),
yaxis=dict(title='Housing', tickvals=list(housing_numeric.values()), ticktext=list(housing_numeric.keys()), tickangle=-45),
zaxis=dict(title='Weight Gain'),
aspectmode='cube'
),
height=600, width=1200, margin=dict(l=50, r=50, b=50, t=100)
)
# Tick Angle: tickangle=-45 rotates the tick labels on the x and y axes by 45 degrees, which can help in preventing overlap and making them more readable.
# Margin Adjustment: margin=dict(l=50, r=50, b=50, t=100) adjusts the left, right, bottom, and top margins of the plot area to ensure sufficient space for axis labels and titles.
# Adjust the margin values further if needed based on your specific plot dimensions and requirements.
# Save the figure as an HTML file
fig_surface.write_html("3D_surface_plot.html")
# Display the figure
fig_surface.show()
# Create and display the scatter plot separately
fig_scatter = go.Figure(scatter_plot)
fig_scatter.update_layout(
title='Scatter Plot of Diet, Housing, and Weight Gain',
scene=dict(
xaxis=dict(title='Diet', tickvals=list(diet_numeric.values()), ticktext=list(diet_numeric.keys())),
yaxis=dict(title='Housing', tickvals=list(housing_numeric.values()), ticktext=list(housing_numeric.keys())),
zaxis=dict(title='Weight Gain')
),
height=600, width=800
)
# Save the figure as an HTML file
fig_scatter.write_html("3D_scatter_plot.html")
# Display the figure
fig_scatter.show()